home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 April: Mac OS SDK / Dev.CD Apr 00 SDK1.toast / Development Kits / Mac OS / Open Transport 1.3 / Open Transport SDK / Open Tpt Client Developer / Samples / AppleTalk / ATalkSampleUtils.cp < prev    next >
Encoding:
Text File  |  1998-04-30  |  4.7 KB  |  204 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        AtalkSampleUtils.cp
  3.  
  4.     Contains:    Some utility routines used by the AppleTalk sample programs
  5.  
  6.     Copyright:    © 1993-1997 by Apple Computer, Inc., all rights reserved.
  7.  
  8. */
  9.  
  10. #ifndef __ATALKSAMPLEUTILS__
  11. #include "ATalkSampleUtils.h"
  12. #endif
  13. #ifndef __OPENTPTAPPLETALK__
  14. #include <OpenTptAppleTalk.h>
  15. #endif
  16. #ifndef __MENUS__
  17. #include <Menus.h>
  18. #endif
  19. #ifndef __DEVICES__
  20. #include <Devices.h>
  21. #endif
  22. #ifndef __EVENTS__
  23. #include <Events.h>
  24. #endif
  25. #ifndef __STDIO__
  26. #include <stdio.h>
  27. #endif
  28.  
  29. /*******************************************************************************
  30. ** ShowEndpointInfo
  31. **
  32. ********************************************************************************/
  33.  
  34.     static void ShowSize(char* format, SInt32 size)
  35.     {
  36.         if ( size == T_INFINITE )
  37.             fprintf(stderr, "%sT_INFINITE\n", format);
  38.         else if ( size == T_INVALID )
  39.             fprintf(stderr, "%sT_INVALID\n", format);
  40.         else
  41.             fprintf(stderr, "%s%ld\n", format, size);
  42.     }
  43.     
  44. void ShowEndpointInfo(TEndpoint* ep)
  45. {
  46.     TEndpointInfo info;
  47.     OSStatus err = ep->GetEndpointInfo(&info);
  48.     fprintf(stderr, " TEndpointInfo:\n");
  49.     if ( err != kOTNoError )
  50.     {
  51.         fprintf(stderr, "     ERROR! = %d\n", err);
  52.     }
  53.     else
  54.     {
  55.         char* type;
  56.         ShowSize("       addr = ", info.addr);
  57.         ShowSize("    options = ", info.options);
  58.         ShowSize("       tsdu = ", info.tsdu);
  59.         ShowSize("      etsdu = ", info.etsdu);
  60.         ShowSize("    connect = ", info.connect);
  61.         ShowSize("     discon = ", info.discon);
  62.         
  63.         fprintf(stderr, "   servtype = ");
  64.         switch ( info.servtype )
  65.         {
  66.             case T_COTS:        type = "T_COTS"; break;
  67.             case T_COTS_ORD:    type = "T_COTS_ORD"; break;
  68.             case T_CLTS:        type = "T_CLTS"; break;
  69.             case T_TRANS:        type = "T_TRANS"; break;
  70.             case T_TRANS_ORD:    type = "T_TRANS_ORD"; break;
  71.             case T_TRANS_CLTS:    type = "T_TRANS_CLTS"; break;
  72.             default:            type = NULL;
  73.         }
  74.         if ( type != NULL )
  75.             fprintf(stderr, "%s\n", type);
  76.         else
  77.             fprintf(stderr, "%lu\n", info.servtype);
  78.             
  79.         SInt32 flags = info.flags;
  80.         fprintf(stderr, "      flags = ", info.flags);
  81.         Boolean ndComma = false;
  82.         if ( flags & T_SENDZERO )
  83.         {
  84.             flags &= ~T_SENDZERO;
  85.             fprintf(stderr, "T_SENDZERO");
  86.             ndComma = true;
  87.         }
  88.         if ( flags & T_XPG4_1 )
  89.         {
  90.             flags &= ~T_XPG4_1;
  91.             if ( ndComma )
  92.                 fprintf(stderr, ", ");
  93.             ndComma = true;
  94.             fprintf(stderr, "T_XPG4_1");
  95.         }
  96.         if ( flags & T_CAN_RESOLVE_ADDR )
  97.         {
  98.             flags &= ~T_CAN_RESOLVE_ADDR;
  99.             if ( ndComma )
  100.                 fprintf(stderr, ", ");
  101.             ndComma = true;
  102.             fprintf(stderr, "T_CAN_RESOLVE_ADDR");
  103.         }
  104.         if ( flags & T_CAN_SUPPLY_MIB )
  105.         {
  106.             flags &= ~T_CAN_SUPPLY_MIB;
  107.             if ( ndComma )
  108.                 fprintf(stderr, ", ");
  109.             ndComma = true;
  110.             fprintf(stderr, "T_CAN_SUPPLY_MIB");
  111.         }
  112.         if ( flags != 0 )
  113.         {
  114.             if ( ndComma )
  115.                 fprintf(stderr, ", ");
  116.             fprintf(stderr, "%08lX", flags);
  117.             
  118.         }
  119.         fprintf(stderr, "\n");
  120.     }
  121. }
  122.  
  123. /*******************************************************************************
  124. ** ShowEndpointState
  125. ********************************************************************************/
  126.  
  127. void ShowEndpointState(TEndpoint* ep, char* prefixString)
  128. {
  129.     char* strPtr;
  130.     
  131.     OTResult state = ep->GetEndpointState();
  132.     fprintf(stderr, "%sState = %d, ", prefixString, state);
  133.     switch ( state )
  134.     {
  135.         case T_UNINIT:
  136.             strPtr = "T_UNINIT";
  137.             break;
  138.         case T_UNBND:
  139.             strPtr = "T_UNBND";
  140.             break;
  141.         case T_IDLE:
  142.             strPtr = "T_IDLE";
  143.             break;
  144.         case T_OUTCON:
  145.             strPtr = "T_OUTCON";
  146.             break;
  147.         case T_INCON:
  148.             strPtr = "T_INCON";
  149.             break;
  150.         case T_DATAXFER:
  151.             strPtr = "T_DATAXFER";
  152.             break;
  153.         case T_OUTREL:
  154.             strPtr = "T_OUTREL";
  155.             break;
  156.         case T_INREL:
  157.             strPtr = "T_INREL";
  158.             break;
  159. //        case T_INFLUX:
  160. //            strPtr = "T_INFLUX";
  161. //            break;
  162.         default:
  163.             strPtr = "Unknown";
  164.     }
  165.     fprintf(stderr,"%s\n", strPtr);
  166. }
  167.  
  168. /*******************************************************************************
  169. ** ShowFullEndpointData
  170. **
  171. ********************************************************************************/
  172.  
  173. void ShowFullEndpointData(TEndpoint* ep)
  174. {
  175.     fprintf(stderr, "FULL ENDPOINT INFO FOR ENDPOINT AT %08lX\n", ep);
  176.     
  177.     fprintf(stderr, "               Mode = %s\n", (ep->IsSynchronous() ? "Synchronous" : "Asynchronous"));
  178.  
  179.     ShowEndpointState(ep, "              ");
  180.     
  181.     fprintf(stderr, "             Look() = %d\n", ep->Look());
  182.     
  183.     ShowEndpointInfo(ep);
  184.     
  185.     fprintf(stderr, "");
  186. }
  187.  
  188. /*******************************************************************************
  189. ** ShowDDPAddress -- print out an AppleTalk DDP address
  190. ********************************************************************************/
  191.  
  192. void ShowDDPAddress(DDPAddress* addr)
  193. {
  194.     if (addr->GetAddressType() == AF_ATALK_DDP ||
  195.         addr->GetAddressType() == AF_ATALK_DDPNBP)
  196.     {
  197.         fprintf(stderr, "Net $%04X, Node $%02X, Socket $%02X, Type $%02X",
  198.             addr->GetNetwork(), addr->GetNode(), addr->GetSocket(), addr->GetType());
  199.     }
  200.     else
  201.         fprintf(stderr, "Not DDP Addr!");
  202. }
  203.  
  204.